package com.iris.live.services.services;

import com.iris.live.services.models.RequestBase;
import com.iris.live.services.models.ResultData;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;

/**
 * 数据检核Service
 * Created by wzy on 2017/5/19.
 */
public interface DataCheckService {

    /**
     * 金融专员数据导入
     * @param file 文件
     * @param userName 用户名
     * @param permit 许可
     * @param nodeName 节点名称
     * @return Map
     * @throws Exception 异常
     */
    ResultData importFinanceData(MultipartFile file, String userName, String permit, String nodeName) throws Exception;

    /**
     * 保险专员数据导入
     * @param file 文件
     * @param userName 用户名
     * @param permit 许可
     * @param nodeName 节点名称
     * @return Map
     * @throws Exception 异常
     */
    ResultData importInsuranceData(MultipartFile file, String userName, String permit, String nodeName) throws Exception;

    /**
     * 销售行政数据导入
     * @param file 文件
     * @param userName 用户名
     * @param permit 许可
     * @param nodeName 节点名称
     * @return Map
     * @throws Exception 异常
     */
    ResultData importSalesAdminData(MultipartFile file, String userName, String permit, String nodeName) throws Exception;

    /**
     * 销售顾问数据导入
     * @param file 文件
     * @param userName 用户名
     * @param permit 许可
     * @param nodeName 节点名称
     * @return Map
     * @throws Exception 异常
     */
    ResultData importSalesConsultantData(MultipartFile file, String userName, String permit, String nodeName) throws Exception;

    /**
     * 获得金融数据的对比结果
     * @param req 分页参数
     * @param permit 许可
     * @return 返回
     * @throws Exception 异常信息
     */
    ResultData getContrastResultOfFinance(RequestBase req,String permit) throws Exception;

    /**
     * 获得保险数据的对比结果
     * @param req 分页参数
     * @param permit 许可
     * @return 返回
     * @throws Exception 异常信息
     */
    ResultData  getContrastResultOfInsurance(RequestBase req,String permit) throws Exception;

    /**
     * 获得销售行政的对比结果
     * @param req 分页参数
     * @param permit 许可
     * @return 返回
     * @throws Exception 异常信息
     */
    ResultData  getContrastResultOfSalesAdmin(RequestBase req,String permit) throws Exception;

    /**
     * 获得销售顾问的对比结果
     * @param req 分页参数
     * @param permit 许可
     * @return 返回
     * @throws Exception 异常信息
     */
    ResultData  getContrastResultOfSalesConsultant(RequestBase req,String permit) throws Exception;

    /**
     *  获取金融的排名结果
     * @param req 请求参数
     * @return 返回
     */
    ResultData getRankingOfFinance(RankingRequest req) throws Exception;

    /**
     *  获取保险的排名结果
     * @param req 请求参数
     * @return 返回
     */
    ResultData getRankingOfInsurance(RankingRequest req) throws Exception;

    /**
     *  获取销售行政的排名结果
     * @param req 请求参数
     * @return 返回
     */
    ResultData getRankingOfSalesAdmin(RankingRequest req) throws Exception;

    /**
     *  获取销售顾问的排名结果
     * @param req 请求参数
     * @return 返回
     */
    ResultData getRankingOfSalesConsultant(RankingRequest req) throws Exception;

    /**
     * 导出金融排名
     * @param req 参数
     * @param response  response
     */
    void exportFinanceRanking(RankingRequest req, HttpServletResponse response);

    /**
     * 导出金保险排名
     * @param req 参数
     * @param response  response
     */
    void exportInsuranceRanking(RankingRequest req, HttpServletResponse response);

    /**
     * 导出销售行政排名
     * @param req 参数
     * @param response  response
     */
    void exportSalesAdminRanking(RankingRequest req, HttpServletResponse response);

    /**
     * 导出销售顾问排名
     * @param req 参数
     * @param response  response
     */
    void exportSalesConsultantRanking(RankingRequest req, HttpServletResponse response);

    /**
     * 排名-请求参数封装
     */
    static class RankingRequest extends RequestBase{
        public String permit;  //许可
        public String startBatch; // 开始批次
        public String endBatch; // 结束批次
    }

    void exportScFalseRateReport (HttpServletResponse response, String permit, String exportStartDate, String exportEndDate);

    void exportFinanceFalseRateReport (HttpServletResponse response, String permit, String exportStartDate, String exportEndDate);

    void exportInsuranceFalseRateReport (HttpServletResponse response, String permit, String exportStartDate, String exportEndDate);

    void exportScAdminFalseRateReport (HttpServletResponse response, String permit, String exportStartDate, String exportEndDate);

    void exportScContrastReport (HttpServletResponse response, String permit, String startDate, String endDate);

    void exportFinanceContrastReport (HttpServletResponse response, String permit, String startDate, String endDate);

    void exportInsuranceContrastReport (HttpServletResponse response, String permit, String startDate, String endDate);

    void exportScAdminContrastReport (HttpServletResponse response, String permit, String startDate, String endDate);

    void exportScRankingListReport (HttpServletResponse response, String permit, String startDate, String endDate);

    void exportFinanceRankingListReport (HttpServletResponse response, String permit, String startDate, String endDate);

    void exportInsuranceRankingListReport (HttpServletResponse response, String permit, String startDate, String endDate);

    void exportScAdminRankingListReport (HttpServletResponse response, String permit, String startDate, String endDate);

}
